package com.balabala.gym_user.service;

import com.balabala.gym_enum.ResultEnum;
import com.balabala.gym_user.pojo.dto.AddVipCardDTO;
import com.balabala.gym_user.pojo.dto.VipCardQueryDTO;
import com.balabala.gym_user.pojo.entity.VipCard;
import com.balabala.gym_user.pojo.vo.VipCardUpdateVO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Author 何涛
 * @Date: 2023/05/01/ 15:00
 * @description 会员卡service
 */
public interface VipCardService extends IService<VipCard> {
    /**
     * 添加会员卡
     * @param addVipCardDto
     * @return
     */
    Boolean addVipCard(AddVipCardDTO addVipCardDto);

    /**
     * 根据查询条件查询会员卡信息
     * @param vipCardQueryDto
     * @return
     */
    PageInfo getVipCardPageList(VipCardQueryDTO vipCardQueryDto);

    /**
     * 根据id删除会员卡信息
     * @param id
     * @return
     */
    Boolean deleteVipCardById(Long id);

    /**
     * 根据id查询会员卡信息
     * @param id
     * @return
     */
    VipCardUpdateVO findById(Long id);

    /**
     * 修改会员卡信息
     * @param vipCardUpdateVo
     * @return
     */
    Boolean updateVipCard(VipCardUpdateVO vipCardUpdateVo);

    /**
     * 根据课程id得到支持的会员卡
     * @param courseId
     * @return
     */
    List<VipCard> getSupportVipCardByCourseId(Long courseId);

    /**
     * 根据会员卡类型查询所有会员卡
     * @param cardType
     * @return
     */
    List<VipCard> findByCardType(Integer cardType);

    /**
     * 会员卡id删除该会员卡相关缓存
     * @param cardId
     */
    void  deleteCardCache(Long cardId);
}
